<?php

// 检查后台用户是否登录
namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;

class CheckLogin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next,$params){

        // 获取当前请求路由的别名
        $currRouteName=$request->route()->getName();
        
        // 检查当前请求是否与参数一致，如果一致则不进入
        // 目的是为了排除登录和登出的请求验证，因为登录和登出不存在用户验证
        // 所以会造页面一直循环
        
        if(!($currRouteName==$params)){
            
            if(!($currRouteName=="userLoginForm")){
                    // 当前请求路由不是登录和登出，需要验证
                    // dd(Session::all());
                    // exit;
                if(!Auth::check()){
                    // 清空Session
                    Session()->flush();
                    
                    // 跳转至登录界面
                    return redirect("userLogin")->with(["fail"=>"请登录"]);
                }
            }
                  

        }
       
        // 当前请求是登录和登出，不需要验证直接跳转到登录和登出
        return $next($request);
    }
}
